package com.zekdot.registerclient.service;

import com.zekdot.registerclient.dto.Envelope;
import com.zekdot.registerclient.entity.EnrollDataEntity;

import java.util.Date;
import java.util.List;

/**
 * Create by zekdot on 20-3-22.
 */
public interface EnrollDataService {
    /**
     * 查看一个报名是否已经提交
     * @param eId
     * @param username
     * @return

    Envelope enrollDataStatus(String eId,String username);
     */
    /**
     * 增加一个报名数据
     * @param username 用户名
     * @param enrollDataEntity 报名数据实体
     * @return 结果
     */
    Envelope enroll(String username,EnrollDataEntity enrollDataEntity);


    /**
     * 更新某个报名数据的状态
     * @param EId 报名id
     * @param userId 用户id
     * @param username 用户名
     * @param status 新状态
     * @param rejectReason 拒绝原因
     * @return
     */
    Envelope updateStatus(String EId,String userId,String username,int status,String rejectReason);

    /**
     * 根据某个报名id获取所有报名者信息
     * @param EId 报名id
     * @return
     */
    Envelope getDataByEId(String EId);

    /**
     * 为报名增加预报名人员
     * @param usernames 用户名列表
     * @param eId 报名id
     * @param username 用户名
     * @return 预报名结果
     */
    Envelope addPreEnrollUsers(List<String> usernames, String eId,String username);


    /**
     * 获取报名结果
     * @param eId 报名id
     * @param username 用户名
     * @return
     */
    Envelope getEnrollResult(String eId,String username);

    /**
     * 获取自己填写过的报名列表
     * @param username 用户名
     * @return
     */
    Envelope moreEnrollData(String username, Date lastTime, int length);

    /**
     * 获取报名数据的描述
     * @param username 用户名
     * @param eId 报名id
     * @param lastTime 最后一条提交时间
     * @param length 长度
     * @return
     */
    Envelope getDataDescsByEid(String username,String eId,Date lastTime,int length);

    /**
     * 获取报名数据详情
     * @param userId 用户id
     * @param username 用户名
     * @param eId 报名id
     * @return
     */
    Envelope enrollDataDetail(String userId,String username,String eId);

    /**
     * 根据报名id和token获得所有未审核用户
     * @param eId 报名id
     * @param token 操作token
     * @param length 列表长度
     * @return
     */
    Envelope getEnrollDataByToken(String eId,String token,int length);

    /**
     * 根据token对用户进行审核
     * @param eId 报名id
     * @param reqArrayStr 结果JsonArray转换的字符串
     * @param token 操作token
     * @return
     */
    Envelope checkUserByToken(String eId,String reqArrayStr,String token);


    Envelope getExcelData(String tempToken);
}

